A database can be considered as a multidimensional space (mD-space) where each axis corresponds to an attribute and each object occupies a point in that space. Attribute values may be finite or infinite; continuous, discrete ordinal or discrete nominal. It should be seen, however, that objects need not be valued for all attributes. Similarly, simulation engines can be thought of as operating in multi-dimensional space and queries on such engines are often phrased in the form “Show me attributes A, B and C when attribute D fulfils conditions x and attribute E fulfils conditions y”.
Conventional relational databases store information in a plurality of tables (relations) with each table containing one or more objects and each object containing one or more attributes. Selecting objects in a database corresponds to identifying a subset of objects in the mD-space by specifying one or more conditions within a query. A common form of specifying a query on such databases employs a Structured Query Language (SQL). SQL queries generally take the form:
Select Display Attributes from Relations where Conditions
Where a database comprises many tables linked together through a complex network of index fields, a database query may become quite complex involving, for example, INNERJOIN expressions. Often applications which link to databases do not expose a user to having to specify a complete SQL query, rather they take input from the user in a simple manner, for example, getting the name of a person they wish to find using a text entry field. This input is used as one of the Conditions in the above query, each condition comprising a conditional attribute name followed by an expression including a relational operator, for example, Name=“Conor” or 5>Age<12. Such Conditions as well as the pre-defined Display Attributes (sometimes known as the “select list”) which are to form the resultant report and the Relations from which information is drawn make up the query.
The resultant report is itself usually a relation, again comprising a number of objects conforming to the conditions and having the display attributes specified in the query. The relation is then rendered so that it can be displayed on the screen in a suitable manner—for example as a table or as a graph.
The resultant report can be thought of as a notional curve in the mD-space connecting all the objects belonging to the subset identified by the query and moving through the report is equivalent to navigating along that curve. Nonetheless, because the report is static, should the user not find the required information, they must backtrack to amend the original query before being presented with a new report.
It will be seen, however, that the user often does not have all the right information to define the best possible query initially. Thus, the user submits a query, looks at the results, modifies the query, gets the new result, and so forth. So, to get closer to the desired result requires resubmitting another query which means losing time.
Applicant's co-pending application Ser. No. GB9925741.2discloses a system enabling a user to refine a query on a database result set while retaining previous result sets, thus building up a path through which the user can both navigate around previous results and adjust criteria for further searches. This enables a user to locally move around a specific object in a multi-attribute type database space, according to one or more selected conditions, to provide fine tuning of the result obtained in a report.
It is an object of the present invention on the other hand, to enable a user to completely reconstruct a query graphically.